package com.jhgsys.internal.accident.service;

import com.jhgsys.internal.accident.dto.AccidentReportDto;
import com.jhgsys.internal.accident.dto.AccidentReportReasonDto;
import com.jhgsys.internal.accident.entity.AccidentReportReason;
import com.jhgsys.internal.common.entity.QueryRequest;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 *  Service接口
 *
 * @author zhangwei
 * @date 2024-08-26 16:09:46
 */
public interface IAccidentReportReasonService extends IService<AccidentReportReason> {
    /**
     * 查询（分页）
     * @author zhangwei
     * @date 2024-08-26 16:09:46
     * @param request QueryRequest
     * @param accidentReportReason accidentReportReason
     * @return IPage<AccidentReportReason>
     */
    IPage<AccidentReportReason> findAccidentReportReasonPage(QueryRequest request, AccidentReportReason accidentReportReason);

    /**
     * 查询（所有）
     * @author zhangwei
     * @date 2024-08-26 16:09:46
     * @param accidentReportReason accidentReportReason
     * @return List<AccidentReportReason>
     */
    List<AccidentReportReason> findAccidentReportReasonList(AccidentReportReason accidentReportReason);

    /**
    * 根据ID查询
    * @author zhangwei
    * @date 2024-08-26 16:09:46
    * @param id
    * @return AccidentReportReasonDto
    */
    AccidentReportReasonDto findAccidentReportReasonById(String id);

    /**
     * 新增
     * @author zhangwei
     * @date 2024-08-26 16:09:46
     * @param accidentReportReason accidentReportReason
     */
    void createAccidentReportReason(AccidentReportReason accidentReportReason);

    /**
     * 修改
     * @author zhangwei
     * @date 2024-08-26 16:09:46
     * @param accidentReportReason accidentReportReason
     */
    void updateAccidentReportReason(AccidentReportReason accidentReportReason);

    /**
     * 逻辑删除
     * @author zhangwei
     * @date 2024-08-26 16:09:46
     * @param accidentReportReason accidentReportReason
     * @param accidentReportReasonIds accidentReportReasonIds
     */
    void deleteAccidentReportReason(AccidentReportReason accidentReportReason,String accidentReportReasonIds);

    /**
    * 物理删除
    * @author zhangwei
    * @date 2024-08-26 16:09:46
    * @param accidentReportReasonIds accidentReportReasonIds
    */
    void physicallyDeleteAccidentReportReason(String accidentReportReasonIds);

    /**
     * 根据事故报告id删除
     * @author admin
     * @date 2024-08-27 10:56:15
     * @param reportIds
     */
    void deleteByReportIds(String reportIds);

    /**
     * 根据AccidentReport查询（分页）
     * @author zhangwei
     * @date 2024-08-26 16:09:46
     * @param request QueryRequest
     * @param accidentReportDto accidentReportDto
     * @return IPage<AccidentReportReason>
     */
    IPage<AccidentReportReasonDto> findPageByReport(QueryRequest request, AccidentReportDto accidentReportDto);

}
